#pragma once


struct ListNode
{
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};


class Solution1
{
private:
    ListNode *addTwoNumbersByStep(int step, ListNode *l1, ListNode *l2);
    public:
    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2);
};